/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.cip.esymons.eventos.be;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;
import org.cip.esymons.general.be.ConsejoDepartamental;
import org.cip.esymons.general.be.PersonaNatural;

/**
 *
 * @author Lizardo Rios
 */
@Entity
@Table(name = "eca_entrega_certificado")
//@NamedQueries({@NamedQuery(name = "EntregaCertificado.findAll", query = "SELECT e FROM EntregaCertificado e"), @NamedQuery(name = "EntregaCertificado.findByEceCodigo", query = "SELECT e FROM EntregaCertificado e WHERE e.eceCodigo = :eceCodigo"), @NamedQuery(name = "EntregaCertificado.findByEceEntregado", query = "SELECT e FROM EntregaCertificado e WHERE e.eceEntregado = :eceEntregado")})
public class EntregaCertificado implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "ece_codigo")
    private Integer eceCodigo;
    @Basic(optional = false)
    @Column(name = "ece_entregado")
    private boolean eceEntregado;
    @Basic(optional = false)
    @Column(name = "ece_vecesImpresion")
    private Integer eceVecesImpresion;
    @JoinColumn(name = "mat_codigo", referencedColumnName = "mat_codigo")
//    @ManyToOne(optional = false, fetch = FetchType.LAZY)
//    private Matricula matCodigo;
    @ManyToOne(fetch = FetchType.LAZY)
    private Matricula matCodigo;
    @JoinColumn(name = "for_codigo", referencedColumnName = "for_codigo")
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private FormatoCertificado forCodigo;
    @Column(name = "ece_orden")
    private Integer eceOrden;
    @Column(name = "ece_fecha")
    @Temporal(TemporalType.TIMESTAMP)
    private Date eceFecha;
    @JoinColumn(name = "pin_codigo", referencedColumnName = "pin_codigo")
    @ManyToOne(fetch = FetchType.LAZY)
    private PreinscripcionEvento pinCodigo;

    @Transient
    private Boolean seleccion;

    @Transient
    private ConsejoDepartamental consejo;
    @Transient
    private PersonaNatural instructor;
    @Transient
    private ModuloCurso moduloCurso;
    @Transient
    private String fechaReporte;
    
    public EntregaCertificado() {
    }

    public EntregaCertificado(Integer eceCodigo) {
        this.eceCodigo = eceCodigo;
    }

    public EntregaCertificado(Integer eceCodigo, boolean eceEntregado) {
        this.eceCodigo = eceCodigo;
        this.eceEntregado = eceEntregado;
    }

    public ModuloCurso getModuloCurso() {
        return moduloCurso;
    }
    public void setModuloCurso(ModuloCurso moduloCurso) {
        this.moduloCurso = moduloCurso;
    }

    public Integer getEceCodigo() {
        return eceCodigo;
    }
    public void setEceCodigo(Integer eceCodigo) {
        this.eceCodigo = eceCodigo;
    }

    public Boolean getSeleccion() {
        return seleccion;
    }

    public void setSeleccion(Boolean seleccion) {
        this.seleccion = seleccion;
    }

    public String getFechaReporte() {
        return fechaReporte;
    }

    public void setFechaReporte(String fechaReporte) {
        this.fechaReporte = fechaReporte;
    }

    public PreinscripcionEvento getPinCodigo() {
        return pinCodigo;
    }

    public void setPinCodigo(PreinscripcionEvento pinCodigo) {
        this.pinCodigo = pinCodigo;
    }

    

    public boolean getEceEntregado() {
        return eceEntregado;
    }
    public void setEceEntregado(boolean eceEntregado) {
        this.eceEntregado = eceEntregado;
    }

    public Integer getEceOrden() {
        return eceOrden;
    }
    public void setEceOrden(Integer eceOrden) {
        this.eceOrden = eceOrden;
    }

    public Date getEceFecha() {
        return eceFecha;
    }
    public void setEceFecha(Date eceFecha) {
        this.eceFecha = eceFecha;
    }



    public Matricula getMatCodigo() {
        return matCodigo;
    }
    public void setMatCodigo(Matricula matCodigo) {
        this.matCodigo = matCodigo;
    }

    public FormatoCertificado getForCodigo() {
        return forCodigo;
    }
    public void setForCodigo(FormatoCertificado forCodigo) {
        this.forCodigo = forCodigo;
    }

    public Integer getEceVecesImpresion() {
        return eceVecesImpresion;
    }
    public void setEceVecesImpresion(Integer eceVecesImpresion) {
        this.eceVecesImpresion = eceVecesImpresion;
    }

    public ConsejoDepartamental getConsejo() {
        return consejo;
    }
    public void setConsejo(ConsejoDepartamental consejo) {
        this.consejo = consejo;
    }

    public PersonaNatural getInstructor() {
        return instructor;
    }
    public void setInstructor(PersonaNatural instructor) {
        this.instructor = instructor;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (eceCodigo != null ? eceCodigo.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof EntregaCertificado)) {
            return false;
        }
        EntregaCertificado other = (EntregaCertificado) object;
        if ((this.eceCodigo == null && other.eceCodigo != null) || (this.eceCodigo != null && !this.eceCodigo.equals(other.eceCodigo))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "org.cip.esymons.eventos.be.EntregaCertificado[eceCodigo=" + eceCodigo + "]";
    }

    
}
